/*
 * Categoria.java
 *
 * Created on 16 de abril de 2007, 13:59
 */

package despachador.administracion;

import dal.CategoriaDAL;
import excepciones.AvwException;
import gestores.administracion.GestorCategoria;
import java.io.*;
import java.net.*;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.mail.Session;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.swing.text.html.HTMLDocument;
import negocio.CategoriaWeb;
import org.w3c.dom.Attr;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.TypeInfo;
import org.w3c.dom.UserDataHandler;
import org.w3c.dom.html.HTMLFormElement;
import org.w3c.dom.html.HTMLOptionElement;

/**
 *
 * @author Administrador
 * @version
 */
public class Categoria extends HttpServlet {
    private HttpSession session = null;
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    public void processRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String accion = "";
        if (request.getParameter("categoria")!=null){
            accion = String.valueOf(request.getParameter("categoria"));
        }
        if (accion.equals("eliminar")){
            String categoria = request.getParameter("cawCodigo");
            try{
                if (!GestorCategoria.eliminarCategoria(categoria)){
                    String advertencia = "La categoria no se elimino por que tiene articulos relacionados";
                    session.setAttribute("msg_advertencia", advertencia);
                }
            } catch (AvwException e) {
                request.setAttribute("error",
                            e.getMessage());
                    dispatch(request, response, "/compositor/pagina/error.jsp");
            }
            armarPagina(request, response);            
        }else if(accion.equals("modificar")){
            armarPaginaCategoria(request, response);
                    
        }else if(accion.equals("crear")){
            armarPaginaCategoria(request, response);

        }else if(accion.equals("modificarCat")){
            String categorias[] = null;
            CategoriaWeb categoriaWeb = new CategoriaWeb();
            ArrayList<CategoriaWeb> arrayCategorias = new ArrayList<CategoriaWeb>();
            if (request.getParameter("cawRelacionada") != null){
                categorias = request.getParameterValues("cawRelacionada");
                int i = 0;
                while(i != categorias.length){
                    CategoriaWeb categ = new CategoriaWeb(categorias[i]);
                    
                    arrayCategorias.add(categ);

                    i++;
                }
            }
            categoriaWeb.setCawCategoriaRelacion(arrayCategorias);
            
            if (request.getParameter("cawNombre")!=null){
                String cawNombre[] = request.getParameterValues("cawNombre"); 
                categoriaWeb.setCawNombre(cawNombre[0]);
            }
            
            if (request.getParameter("palabrasClaves")!=null){
                String cawPalabrasClaves[] = request.getParameterValues("palabrasClaves");
                categoriaWeb.setCawPalabrasClaves(cawPalabrasClaves[0]);
            }
            String codigoPadre[] =null;
            if (request.getParameter("cawCodigoPadre")!=null){
                 codigoPadre = request.getParameterValues("cawCodigoPadre");
                if (!codigoPadre[0].equals("SinAsignar")){
                    categoriaWeb.setCawCategoriaPadre(new CategoriaWeb(codigoPadre[0]));
                }else{
                     categoriaWeb.setCawCategoriaPadre(new CategoriaWeb());
                }
            }
            String cawCodigo="";
            if(request.getParameter("cawCodigo")!= null){
                cawCodigo = request.getParameter("cawCodigo");
                categoriaWeb.setCawCodigo(cawCodigo);
            }
            try{
                if(!cawCodigo.equals("")){
                    CategoriaDAL.modificarCategoria(categoriaWeb);
                }else{
                    CategoriaDAL.insertarCategoria(categoriaWeb);
                }
                
                armarPagina(request, response);
            }catch (AvwException e) {
                request.setAttribute("error",
                            e.getMessage());
                    dispatch(request, response, "/compositor/pagina/error.jsp");
            }
        }else{
                    armarPagina(request, response);
        }
    }
    private void armarPagina(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        // Especificamos que pagina se coloca en cada parte del layout
        request.setAttribute("1", "/vistas/administracion/encabezado.jsp");
        request.setAttribute("2", "/vistas/administracion/menu.jsp");
        request.setAttribute("3", "/vistas/administracion/categorias.jsp");
        request.setAttribute("4", "/vistas/administracion/pie.jsp");
        
        dispatch(request, response, "/compositor/administracion/trescuerpos.jsp");
    }
    
      private void armarPaginaCategoria(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        // Especificamos que pagina se coloca en cada parte del layout
        request.setAttribute("1", "/vistas/administracion/encabezado.jsp");
        request.setAttribute("2", "/vistas/administracion/menu.jsp");
        request.setAttribute("3", "/vistas/administracion/categoria.jsp");
        request.setAttribute("4", "/vistas/administracion/pie.jsp");
        
        dispatch(request, response, "/compositor/administracion/trescuerpos.jsp");
    }
    
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
    
    /**
     * dispatcher method
     */
    protected void dispatch(HttpServletRequest request,
            HttpServletResponse response, String page)
            throws javax.servlet.ServletException,
            java.io.IOException {
        RequestDispatcher dispatcher =
                getServletContext().
                getRequestDispatcher(page);
        dispatcher.forward(request, response);
    }
}